有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法退出do while循环,即使表达式为false

import java.util.*;
public class number_guassing_game{
    private static int a = 0;
    public static void main(String[] args) {
       Scanner in=new Scanner(System.in);
       int number=(int)(Math.random()*100+1);
       int count=0;
       boolean flag = true;
       do {
           int a = in.nextInt();
           count+=1;
           if(a>number) {
               System.out.println("smaller!");
           }else if(a<number) {
               System.out.println("bigger!");
           }
        }while(a != number); 
        System.out.println("congratulations!"+" You have guessed "+count+" times!");
    }
}

enter image description here

显然答案是48,但它没有循环并打印表达式


共 (1) 个答案

  1. # 1 楼答案

    循环条件

    while(a != number);
    

    没有看到读取输入的局部变量:

    int a = in.nextInt();
    

    它看到初始化为0的静态变量永远不会改变:

    private static int a = 0;
    

    因此,循环永远不会终止

    你应该改变

    int a = in.nextInt();
    

    a = in.nextInt();
    

    哦,没有理由a成为static。它可以是main方法的局部变量,只要它在循环之外(和之前)声明